﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.DistributedServices.PermisosModule.WindowsHost.ViewModelBase;
using Cesave.DistributedServices.PermisosModule.WindowsHost.Views.Catalogs.Municipios;
using System.Globalization;
using Cesave.DistributedServices.PermisosModule.WindowsHost.Resources;

namespace Cesave.DistributedServices.PermisosModule.WindowsHost.ViewModels.Catalogs.Municipios
{
	/// <summary>
	/// 
	/// </summary>
	public partial class MunicipiosViewModel
		: ObservableObject
	{

		#region Private properties

		private MunicipiosView _municipiosView;

		#endregion

		#region Constructor

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipiosView"></param>
		public MunicipiosViewModel(MunicipiosView municipiosView)
		{
			if (municipiosView == null)
				throw new ArgumentNullException("municipiosView");
			_municipiosView = municipiosView;
			WireUpEvents();
			InitModels();
		}

		#endregion

		#region Event methods

		/// <summary>
		/// 
		/// </summary>
		private void WireUpEvents()
		{
			PropertyChanged += MunicipiosViewModel_PropertyChanged;
			_municipiosView.Load += LoadView;
			_municipiosView.closeButton.Click += Close;
			_municipiosView.newButton.Click += AddNewMunicipio;
			_municipiosView.bindingNavigatorAddNewItem.Click += AddNewMunicipio;
			_municipiosView.bindingNavigatorDeleteItem.Click += DeleteMunicipio;
			_municipiosView.saveButton.Click += SaveMunicipio;
			_municipiosView.municipioBindingNavigatorSaveItem.Click += SaveMunicipio;
		}

		private void Close(object sender, EventArgs e)
		{
			_municipiosView.Close();
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void LoadView(object sender, EventArgs e)
		{
			_municipiosView.Text = string.Format(
				CultureInfo.InvariantCulture,
				WindowTitles.MunicipiosWindowTitle
			);
		}

		#endregion

		#region Private properties

		/// <summary>
		/// 
		/// </summary>
		private void InitModels()
		{
			LoadEstados();
		}

		/// <summary>
		/// 
		/// </summary>
		private void StartWaiting()
		{
			_municipiosView.WaitingBar.StartWaiting();
		}

		/// <summary>
		/// 
		/// </summary>
		private void EndWaiting()
		{
			_municipiosView.WaitingBar.EndWaiting();
		}

		/// <summary>
		/// 
		/// </summary>
		private void FocusDefaultControl()
		{
			_municipiosView.ActiveControl = _municipiosView.nombreUltraTextEditor;
		}

		#endregion

	}
}
